1 module directx.com;
2 
3 version(Windows):
4 
5 public import directx.win32;
6 public import core.sys.windows.basetyps;
7 
8 //Copy paste from core.sys.windows.unknwn for less dependencies.
9 extern (Windows) {
10     nothrow:
11     void* MIDL_user_allocate(size_t);
12     void MIDL_user_free(void*);
13         interface IUnknown {
14         HRESULT QueryInterface(IID* riid, void** pvObject);
15         ULONG AddRef();
16         ULONG Release();
17     }
18 
19     alias IUnknown LPUNKNOWN;
20 
21     interface IClassFactory : IUnknown {
22         HRESULT CreateInstance(IUnknown UnkOuter, IID* riid, void** pvObject);
23         HRESULT LockServer(BOOL fLock);
24     }
25     alias IClassFactory LPCLASSFACTORY;
26 }
27 alias const(GUID)* REFGUID, REFIID, REFCLSID, REFFMTID;
28 
29 mixin( uuid!(IUnknown, "00000000-0000-0000-C000-000000000046"));
30 mixin( uuid!(IClassFactory,"00000001-0000-0000-C000-000000000046"));
31 
32 template uuid(T, const char[] g) {
33     const char [] uuid =
34         "const IID IID_"~T.stringof~"={ 0x" ~ g[0..8] ~ ",0x" ~ g[9..13] ~ ",0x" ~ g[14..18] ~ ",[0x" ~ g[19..21] ~ ",0x" ~ g[21..23] ~ ",0x" ~ g[24..26] ~ ",0x" ~ g[26..28] ~ ",0x" ~ g[28..30] ~ ",0x" ~ g[30..32] ~ ",0x" ~ g[32..34] ~ ",0x" ~ g[34..36] ~ "]};"~
35         "template uuidof(T:"~T.stringof~"){"~
36         "    const IID uuidof ={ 0x" ~ g[0..8] ~ ",0x" ~ g[9..13] ~ ",0x" ~ g[14..18] ~ ",[0x" ~ g[19..21] ~ ",0x" ~ g[21..23] ~ ",0x" ~ g[24..26] ~ ",0x" ~ g[26..28] ~ ",0x" ~ g[28..30] ~ ",0x" ~ g[30..32] ~ ",0x" ~ g[32..34] ~ ",0x" ~ g[34..36] ~ "]};"~
37         "}";
38 }
39 
40 // from intsafe.h
41 enum INTSAFE_E_ARITHMETIC_OVERFLOW   = cast(HRESULT)0x80070216L;  // 0x216 = 534 = ERROR_ARITHMETIC_OVERFLOW
42 
43 // Interface from DocumentTarget.h
44 mixin(uuid!(IPrintDocumentPackageTarget, "1b8efec4-3019-4c27-964e-367202156906"));
45 interface IPrintDocumentPackageTarget : IUnknown
46 {
47 extern(Windows):
48     /* [helpstring] */ HRESULT GetPackageTargetTypes( 
49         /* [out] */ UINT32* targetCount,
50         /* [size_is][size_is][out] */ GUID** targetTypes);
51     
52     /* [helpstring] */ HRESULT GetPackageTarget( 
53         /* [in] */ REFGUID guidTargetType,
54         /* [in] */ REFIID riid,
55         /* [iid_is][out] */ void** ppvTarget);
56     
57     HRESULT Cancel();
58     
59 }